using System.Data;
using MySqlConnector;

namespace WindowsFormsQuickStart._1127;

public partial class AddBookForm : Form
{
    // 数据库连接字符串（请替换为你的实际配置）
    private readonly string _connStr = "server=localhost;port=3306;database=book;user=root;password=root;charset=utf8mb4;AllowPublicKeyRetrieval=True;";
    
    public AddBookForm()
    {
        InitializeComponent();
    }
    
    private void AddBookForm_Load(object sender, EventArgs e)
    {
        GetAllPublishers();    // 出版社下拉框（comboBox2）
        GetAllBookCategories();// 图书分类下拉框（comboBox4）
        GetAllBookShelves();   // 书架下拉框（comboBox3）
        
    } 
    
    //出版社
    private void GetAllPublishers()
    {
        using var connection = new MySqlConnection(_connStr);
        try
        {
            connection.Open();

            // 1. 查询合作中的出版社
            string sql = "SELECT publisher_id, publisher_name FROM publisher_info WHERE is_cooperating = 1";

            // 2. 适配器+数据集（和你的分类下拉框模板一致）
            MySqlDataAdapter adapter = new MySqlDataAdapter(sql, connection);
            DataSet dataSet = new DataSet();
            adapter.Fill(dataSet, "publisher_info");

            // 3. 获取数据表并插入“全部”选项
            DataTable? dataTable = dataSet.Tables["publisher_info"];
            if (dataTable != null && dataTable.Rows.Count > 0)
            {
                DataRow row = dataTable.NewRow();
                row["publisher_id"] = 0;         // 标识“全部”选项
                row["publisher_name"] = "全部";   // 显示文本
                dataTable.Rows.InsertAt(row, 0); // 插入到首位
            }

            // 4. 绑定到comboBox2（关键：控件名严格匹配设计器）
            this.comboBox2.DataSource = dataTable;
            this.comboBox2.DisplayMember = "publisher_name"; // 显示出版社名称
            this.comboBox2.ValueMember = "publisher_id";     // 绑定出版社ID（用于后续入库）
            this.comboBox2.SelectedIndex = 0;                // 默认选中“全部”
            this.comboBox2.DropDownStyle = ComboBoxStyle.DropDownList; // 禁止手动输入，仅可选择
        }
        catch (Exception ex)
        {
            MessageBox.Show("加载出版社数据失败：" + ex.Message);
        }
    }
    
    //图书分类
    private void GetAllBookCategories()
    {
        using var connection = new MySqlConnection(_connStr);
        try
        {
            connection.Open();

            // 1. 查询不重复的图书分类（核心SQL）
            string sql = "SELECT DISTINCT book_category FROM book_info";

            // 2. 适配器+数据集（复用出版社模板写法）
            MySqlDataAdapter adapter = new MySqlDataAdapter(sql, connection);
            DataSet dataSet = new DataSet();
            adapter.Fill(dataSet, "book_category");

            // 3. 获取数据表并插入“全部”选项
            DataTable? dataTable = dataSet.Tables["book_category"];
            if (dataTable != null && dataTable.Rows.Count > 0)
            {
                DataRow row = dataTable.NewRow();
                row[0] = "全部";  // 图书分类单列，直接用索引0
                dataTable.Rows.InsertAt(row, 0); // 插入到首位
            }

            // 4. 绑定到comboBox4（关键：控件名改为comboBox4）
            this.comboBox4.DataSource = dataTable;
            this.comboBox4.DisplayMember = dataTable.Columns[0].ColumnName; // 绑定book_category列
            this.comboBox4.SelectedIndex = 0;                              // 默认选中“全部”
            this.comboBox4.DropDownStyle = ComboBoxStyle.DropDownList;     // 禁止手动输入
        }
        catch (Exception ex)
        {
            MessageBox.Show("加载图书分类数据失败：" + ex.Message);
        }
    }
    
    //书架
    private void GetAllBookShelves()
    {
        using var connection = new MySqlConnection(_connStr);
        try
        {
            connection.Open();

            // 1. 查询有效书架（状态为1=可用）
            string sql = "SELECT shelf_id, shelf_code FROM shelf_info WHERE shelf_status = 1";

            // 2. 适配器+数据集（完全复用出版社模板写法）
            MySqlDataAdapter adapter = new MySqlDataAdapter(sql, connection);
            DataSet dataSet = new DataSet();
            adapter.Fill(dataSet, "shelf_info");

            // 3. 获取数据表并插入“全部”选项（逻辑对齐出版社）
            DataTable? dataTable = dataSet.Tables["shelf_info"];
            if (dataTable != null && dataTable.Rows.Count > 0)
            {
                DataRow row = dataTable.NewRow();
                row["shelf_id"] = 0;         // 用0标识“全部”选项
                row["shelf_code"] = "全部";   // 显示文本（书架编码）
                dataTable.Rows.InsertAt(row, 0); // 插入到首位
            }

            // 4. 绑定到comboBox3（严格匹配设计器控件名）
            this.comboBox3.DataSource = dataTable;
            this.comboBox3.DisplayMember = "shelf_code"; // 显示书架编码（如A01、B02）
            this.comboBox3.ValueMember = "shelf_id";     // 绑定书架ID（用于后续入库）
            this.comboBox3.SelectedIndex = 0;            // 默认选中“全部”
            this.comboBox3.DropDownStyle = ComboBoxStyle.DropDownList; // 禁止手动输入
        }
        catch (Exception ex)
        {
            MessageBox.Show("加载书架数据失败：" + ex.Message);
        }
    }


    private void button1_Click(object sender, EventArgs e)
    {
        throw new System.NotImplementedException();
    }
}